package com.example.study.controller;

import com.example.study.model.AuthInfo;
import com.example.study.service.AuthInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;

/**
 * 审核controller层
 * 假装有：@RestController，@RequestMapping("/auth")
 *
 * @author duckquan
 */
@Component
public class AuthInfoController {

    @Autowired
    private AuthInfoService authInfoService;

    /**
     * 审核结果
     *
     * @param name
     * @param orderId
     * @param authDate
     * @return
     * @throws ParseException
     */
    public AuthInfo doAuth(String name, String orderId, Date authDate) throws ParseException {
        //三级审批
        Date date = null;
        //查询是否存在审核信息，查询条件: 审核人ID+订单ID,返回Map集合中的Date
        date = authInfoService.queryAuthInfo("1000013", orderId);
        //如果为空，封装AuthInfo信息(待审核)返回
        if (Objects.isNull(date)) {
            return new AuthInfo("0001", "单号：" + orderId, "状态：等待三级审批负责人进行审批");
        }

        //二级审批
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //二级审核人主要审核双十一之前，11-01~11-10号的请求，所以要对传入的审核时间进行判断
        if (authDate.after(format.parse("2024-11-01 00:00:00")) && authDate.before(format.parse("2024-11-10 00:00:00"))) {
            //条件成立，查询二级审核信息
            date = authInfoService.queryAuthInfo("1000012", orderId);
            //如果为空，则状态为 待二级审核人审批状态
            if (Objects.isNull(date)) {
                return new AuthInfo("0001", "单号：" + orderId, "状态：等待二级审批负责人进行审批");
            }
        }

        //一级审批
        if (authDate.after(format.parse("2024-11-11 00:00:00")) && authDate.before(format.parse("2024-11-31 00:00:00"))) {
            date = authInfoService.queryAuthInfo("1000011", orderId);
            if (date == null) {
                return new AuthInfo("0001", "单号：" + orderId, "状态：等待一级审批负责人进行审批");
            }
            return new AuthInfo("0001", "单号: " + orderId, "申请人:" + name + ", 状态: 审批完成!");
        }
        return null;
    }

}
